The present invention relates to a data processing system for creating a representation of a real-world, non-standard, complex objects in a graphical user interface (GUI). More particularly, a process is utilized that allows the areas of a display which become hidden by an image during animation sequences to be quickly and efficiently refreshed when the animation image no longer obscures the area.
Object oriented programming is a known technology which encapsulates data and methods into a programming entity called an object. By protecting certain methods and data through a public interface, an object oriented program can insulate each component from changes to other components yet provide the needed functions with a minimum of reprogramming. For more background information on object oriented technologies, concepts and conventions, please see the following references, Object Oriented Design with Applications, Grady Booch (The Benjamin/Cummins Publishing Company, 1990) and Object Oriented Software Construction, by B. Meyer, (Prentice Hall, 1988).
Typically, graphical user interfaces, everything is present in terms of windows, which include items such as a size border, rectangular client, menu, title bar and the like. These items are not found in real-world objects, such as a telephone or a book that sits on a user's desk. Current data processing technology is moving towards displaying these real-world objects on the computer screen. It is very desirable to have the real-world object on the GUI desktop appear very similar to what a user experiences in real life.
With advances in computer technology, such as the increased availability of high frequency microprocessors and multiprocessing operating systems, software animation is becoming more and more common. When implementing software animation it is important to remove the old (existing) image and to display the new image as fast as possible. Otherwise the visual effect is compromised and realistic, life like motion is not achieved.
Typically, software animation occurs as a result of a single foreground process. In this case, the animation steps are as synchronous as possible when using a multi-threaded operating system, such as Windows and the OS/2 operating system. For this example, the area of animation is also considered to be within the foreground processes for the window client area.
However, if the area of animation is on a desktop, then there are multiple processes. For example, there may be one program operating in each window opened on the desktop, as well as the desktop itself. Each of these processes are competing for time slices on the processor. During an animation sequence, portions of the screen will be intermittently displayed and then hidden by the animation image. If the animation process is above a window containing a word processing program, then the animation thread (process) will be competing with a thread from the word processing program for the screen area that overlaps. In a conventional system, the word processing thread and the animation sequence threads will be treated equally when contending for a time slice of the processor. Thus, the performance of the animation sequence will suffer, due to its contention with the word processing thread. This causes an inconsistent recovery for the animation thread that occurs from the contention with other processes, when their windows need painting.
A particular example of this is a desktop object, such as a real world telephone which includes a drawer. Both objects are children of the desktop, just like any other window applications running on the desktop. When a user selects the telephone drawer handle, the drawer animates in and out over the desktop. Anything underneath the drawer will then require painting (either to be painted as the drawer when it is opened, or to paint the underlying process when the drawer is closed). While the animation sequence is occurring, it is possible (at anytime) for the underlying process to get a time slice to do its painting, which causes the animation to be inconsistent and out of step. This gives the animation sequence a rough, jerky, unrealistic appearance to a user.
Therefore, it can be seen that a need exists for a system and method which provides for a smooth, life like, realistic animation sequence when a user is manipulating a "real-world" type image.